
package com.be.beadmin.device.service;

import com.be.beadmin.common.entity.PageEntity;
import com.be.beadmin.device.dto.output.MaintenanceInfoEx;
import com.be.beadmin.device.dto.input.MaintenanceInfoDto;
import com.be.beadmin.device.dto.input.MaintenanceInfoQueryCriteria;
import com.be.beadmin.device.entity.MaintenanceInfo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Date;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;

/**
* @description 服务接口
* @author zty
* @date 2023-08-01
**/
public interface MaintenanceInfoService {

    /**
    * 分页的查询接口
    * @param pageEntity
    * @return
    */
    Page<MaintenanceInfoEx> getMaintenanceInfoByPage(PageEntity pageEntity);

    /**
    * @param maintenanceInfoDto
    */
    void addMaintenanceInfo(MaintenanceInfoDto maintenanceInfoDto);

    /**
    * @param maintenanceInfoDto
    */
    void updateMaintenanceInfo(MaintenanceInfoDto maintenanceInfoDto);

    /**
    * @param id
    */
    void delMaintenanceInfo(String id);

    /**
    * 删除多个角色
    * @param ids
    */
    void delMaintenanceInfos (List<String> ids);

    /**
     * 根据唯一标识获取维修工单
     * @param identification
     * @return
     */
    MaintenanceInfo getMaintenanceInfoByIdentification(String identification);

    /**
     * 根据创建人姓名获取维修工单
     * @param createName
     * @return
     */
    MaintenanceInfo getMaintenanceInfoByCreateName(String createName);

    /**
     * 根据指派人员获取维修工单
     * @param assignedTo
     * @return
     */
    MaintenanceInfo getMaintenanceInfoByAssignedTo(String assignedTo);

    /**
     * 根据指派人员和完成状态获取维修工单
     * @param assignedTo
     * @param state
     * @return
     */
    MaintenanceInfo getMaintenanceInfoByAssignedToAndState(String assignedTo, String state);

    /**
     * 获取设备列表
     * @return
     */
    List<String> getMaintenanceCommissioners();


    /**
     * 计算维修工时
     * @param maintenanceInfo
     * @return
     */
    Long getMaintenanceHours(MaintenanceInfo maintenanceInfo);

    /**
     * 自动生成维保任务
     * @param faultDesc
     */
    void generateMaintenanceInfoByInspect(String faultDesc);
}